package date0702am;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import cn.edu.ecut.util.DatabaseType;
import cn.edu.ecut.util.JdbcHelper;

public class JdbcTest07 {

	public static void main(String[] args) throws ClassNotFoundException , SQLException {
		
		JdbcHelper helper = JdbcHelper.getInstance( DatabaseType.MYSQL ); // 获得 JdbcHelper 实例
		Statement statement = helper.create(); // 创建 Statement 对象
		
		// 以下DML语句仅针对 MySQL ，不针对 Oracle
		// String DML = "INSERT INTO t_users ( name ) VALUES ( '张翠山' )" ; 
		String DML = "INSERT INTO t_users ( name ) VALUES ( '张翠山' ) , ( '殷素素' ) , ( '张无忌' )" ; 
		
		// 4、"执行"SQL语句
		// Statement.NO_GENERATED_KEYS 表示【不需要】获取由数据库产生的键
		// Statement.RETURN_GENERATED_KEYS 表示【需要】获取由数据库产生的键
		// 一个插入语句执行后返回了两个结果: 受插入语句影响的记录数 、由数据库产生的键
		int count = statement.executeUpdate( DML , Statement.RETURN_GENERATED_KEYS ); 

		// 5、处理返回结果
		System.out.println( "DML执行后受影响的记录数: " + count );
		
		// 获取由数据库产生的键
		ResultSet resultSet = statement.getGeneratedKeys(); // 获取由数据库产生的键( 它们被放在一个 结果集对象中 )
		while( resultSet.next() ) { // 结果集指针向下移动一行
			// 处理当前行数据 ( 从结果集的某行中获取某列数据时，可以使用 列索引 或 列标签名( 列名或列别名 ) )
			int id = resultSet.getInt( 1 ); // 列的索引从 1 开始计数
			System.out.println( "id = " + id  );
		}
		
		// 6、释放资源
		helper.close( resultSet ); // 关闭 结果集对象
		helper.close( statement ); // 关闭 Statement 对象
		helper.release(); // 释放 JdbcHelper 实例内部所占用的资源
		
	}

}
